
use std::collections::HashMap;
#[derive(Debug)]
enum Position<A,B,C>{
    普通成员(A),
    组长(B),
    经理(C),
    总监(C),
    老板(A,B,C)
}

impl Position<i32, i32, i32> {
    fn get_position(&self)->i32{
        match self {
            Position::普通成员(a) => *a,
            Position::组长(a) => *a,
            Position::经理(a) => *a,
            Position::总监(a) => *a,
            _ => 100
        }
    }
}

fn main() {
    //如果你只使用部分通用类型符号，那么必须使用":xxx"语法来列明其它通用符号的类型
    //这种情况应该是使用于其它情况下
    let p:Position<i32, i32, i32> = Position::普通成员(10); //如果直接定义为 let p=Position::普通成员(10);会报错 type annotations needed for `Position<i32, _, _>` 
    println!("{:?}",p);
    let boss=Position::老板("lml",2045,[10,20,30,80,90,95,99,100]);
    println!("{:?}",boss);
    let names:Vec<i32> = Vec::new();    
}

struct Box<A,B,C>{
    names:(A,B,C),
    scores:HashMap<B,C>,
    days:[C;5],
    tools:Vec<A>
}